﻿#ifndef WIDGET_H
#define WIDGET_H
#define TEMPERATURE_STARTING_COORDINATE 45 // 高温平均值起始坐标
#define SPAN_INDEX 3 // 温度曲线间隔指数
#define ORIGIN_SIZE 3 // 温度曲线原点大小

#include <QWidget>
#include<QMouseEvent>
#include <QLabel>
#include <QNetworkAccessManager>
#include <QMessageBox>
#include<QNetworkReply>
#include<QNetworkRequest>
#include<QByteArray>
#include<QPainter>
#include "WeatherTool.h"
#include"weatherdata.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void getWeatherInfo(QNetworkAccessManager* manager);
    void parseJson(QByteArray& qa);
    void setLabelValue();
    void paintSunRiseSet();
    void paintCurve();
protected:
    void mouseMoveEvent(QMouseEvent *event);//移动鼠标事件
    void mousePressEvent(QMouseEvent *event);//点击鼠标事件
    void keyReleaseEvent(QKeyEvent *event);//鼠标松事件
    bool eventFilter(QObject *watched, QEvent *event);//时间过滤
private slots:
    void replayFinished(QNetworkReply*);

    void on_SearchButton_clicked();

    void on_toolButton_clicked();

private:
    Ui::Widget *ui;
    QPoint rPosition; //记录当前鼠标位置与窗口的相对位置
    //ui界面相关数据
    QList<QLabel *> forecast_week_list;         //星期
    QList<QLabel *> forecast_date_list;         //日期
    QList<QLabel *> forecast_aqi_list;          //天气指数
    QList<QLabel *> forecast_type_list;         //天气
    QList<QLabel *> forecast_typeIco_list;      //天气图标
    QList<QLabel *> forecast_high_list;         //高温
    QList<QLabel *> forecast_low_list;          //低温
    //url相关
    QString url;        //接口链接
    QString city;       //访问的城市
    QString cityTmp;    //临时存放城市变量，防止输入错误城市的时候，原来的城市名称还在。
    WeatherTool wt;
    QNetworkAccessManager* manager;
    //天气数据相关
    Today today;
    Forecast forecast[6]; //存储天气数据
    static const QPoint sun[2];
    static const QRect sunRizeSet[2];
    static const QRect rect[2];

};
#endif // WIDGET_H
